/*
 * @lc app=leetcode.cn id=349 lang=java
 *
 * [349] 两个数组的交集
 */

// @lc code=start

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;


class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 使用双指针

        // Set<Integer> res = new HashSet<>();
        // Arrays.sort(nums1);
        // Arrays.sort(nums2);

        // int i = 0, j = 0;
        // while(i < nums1.length && j < nums2.length) {
        //     if(nums1[i] == nums2[j]) {
        //         res.add(nums1[i]);
        //         i++;
        //         j++;
        //     } else if(nums1[i] < nums2[j]) {
        //         i++;
        //     } else {
        //         j++;
        //     }
        // }

        // int[] ans = new int[res.size()];
        // int index = 0; 
        // for(int num : res) {
        //     ans[index++] = num;
        // }
        // return ans;

        // 使用 hashSet
        if(nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
            return new int[0];
        }

        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();

        for(int num : nums1) {
            set1.add(num);
        }

        for(int num : nums2) {
            if(set1.contains(num)) {
                set2.add(num);
            }
        }

        int[] res = new int[set2.size()];
        int idx = 0;
        for(int val : set2) {
            res[idx++] = val;
        }
        return res;
    }
}
// @lc code=end

